#ifndef TEMPLATE_H
#define TEMPLATE_H

#include <QString>

#include "namespace.h"

class ParameterList;
class Body;
class Component;

class Template : public Namespace
{
public:
    Template(const QString& name, ParameterList* params, Body* body, const YYLTYPE& loc);

    QString name() const { return m_name; }
    ParameterList* parameterList() const { return m_params; }
    Body* body() const { return m_body; }
    Component* component();

    virtual Node* getEntry( const QString& name );
    virtual void resolveAll();

private:
    QString m_name;
    ParameterList* m_params;
    Body* m_body;
};

#endif // TEMPLATE_H
